﻿using Entidades;
using LogicaNegocio;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace EncomiendaMVC.Controllers
{
    public class GuiaController : Controller
    {
        //
        // GET: /Guia/

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult GuiaBuscar(string FechaGuiaIni, string FechaGuiaFin, string FechaSalidaIni, string FechaSalidaFin, string NumeroGuia, string Empio, string Estado,
                                     string NombresPE, string PaternoPE, string TelefonoPE, string NombresJP, string PaternoJP, string TelefonoJP)
        {
            ENGuia objBE = new ENGuia(true);

            try
            {
                if (!string.IsNullOrEmpty(FechaGuiaIni.Trim()))
                    objBE.Filtro.FechaGuiaIni = Convert.ToDateTime(FechaGuiaIni);

                if (!string.IsNullOrEmpty(FechaGuiaFin.Trim()))
                    objBE.Filtro.FechaGuiaFin = Convert.ToDateTime(FechaGuiaFin);

                if (!string.IsNullOrEmpty(FechaSalidaIni.Trim()))
                    objBE.Filtro.FechaSalidaIni = Convert.ToDateTime(FechaSalidaIni);

                if (!string.IsNullOrEmpty(FechaSalidaFin.Trim()))
                    objBE.Filtro.FechaSalidaFin = Convert.ToDateTime(FechaSalidaFin);


                objBE.Filtro.PeruNombres = NombresPE.Trim();
                objBE.Filtro.PeruPaterno = PaternoPE.Trim();
                objBE.Filtro.PeruTelefono = TelefonoPE.Trim();

                objBE.Filtro.JaponNombres = NombresJP.Trim();
                objBE.Filtro.JaponPaterno = PaternoJP.Trim();
                objBE.Filtro.JaponTelefono = TelefonoJP.Trim();

                if (!string.IsNullOrEmpty(NumeroGuia.Trim()))
                    objBE.Numero = Convert.ToInt32(NumeroGuia.Trim());

                objBE.Empio = Empio.Trim();
                objBE.Estado = Estado.Trim();

                var lista = new LNGuia().BuscarPeru(objBE);  //GetJson(dtData);
                return Json(lista, JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                objBE = null;
            }
        }

        public ActionResult Reporte()
        {
            return View();
        }

        public JsonResult ObtenerReporte(string origen)
        {
            return Json(ConstruirReporte("Report1", origen), JsonRequestBehavior.AllowGet);
        }

        public string ConstruirReporte(string reporte, string origen)
        {
            //Definir la url del Servidor de RS
            string urlServidorRS = ConfigurationManager.AppSettings["urlServidorRS"];         

            //Definir Carpeta
            string carpeta = ConfigurationManager.AppSettings["carpetaRS"];

            //Definir Parametros
            string parametros = "&Origen=" + origen;

            //Definir Comandos
            string comandos = "&rs:Command=Render&rs:Format=HTML4.0&rc:Parameters=false";

            //Construir nuestro reporte
            StringBuilder sbReporte = new StringBuilder();
            sbReporte.Append("<iframe id='ifCibertec' width='100%' ");
            sbReporte.Append("style='height:300px' ");
            sbReporte.Append("frameborder='0'");
            sbReporte.AppendFormat("src='{0}?/{1}/{2}{3}{4}'",urlServidorRS, carpeta, reporte, comandos, parametros);
            sbReporte.Append("></iframe>");

            return sbReporte.ToString();
        }

        public ActionResult DetalleGuia(int Id)
        {
            var guia = new LNGuia().Guia(Id);

            if (Request.IsAjaxRequest())
                return PartialView(guia);

            return View(guia);
        }

        public ActionResult Files(int Id)
        {
            var guia = new LNGuia().Files(Id);
            int Guid = 1;

            if (Session["partial"] != null)
            {
                Guid = 0;
                Session["partial"] = null;
            }
            
            Session["guiaID"] = Id;

            if (Request.IsAjaxRequest() || Guid == 0)
                return PartialView(guia);

            return View(guia);
        }

        public ActionResult Delete(int Id, int guia)
        {
            new LNGuia().DeleteFile(Id);

            Session["partial"] = 0;

            return RedirectToAction("Files", new { id = Convert.ToInt32(Session["guiaID"]) });
        }

        //public ActionResult Index([ModelBinder(typeof(HomeCustomBinder))] HomePageModels home)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        ViewBag.Title = home.Title;
        //        ViewBag.Date = home.Date;
        //    }
        //    return View();
        //}

        [HttpPost]
        public ActionResult SubirArchivo(IEnumerable<HttpPostedFileBase> fArchivo)
        {
            var ruta = Server.MapPath("~/Content/" + ConfigurationManager.AppSettings["folderPath"]);
            foreach (var archivo in fArchivo)
            {
                var nombreArchivo = archivo.FileName;
                var rutaFinal = Path.Combine(ruta, nombreArchivo);
                archivo.SaveAs(rutaFinal);

                new LNGuia().CreateFile(Convert.ToInt32(Session["guiaID"]), nombreArchivo);    
            }

            Session["partial"] = 0;

            return RedirectToAction("Files", new { id = Convert.ToInt32(Session["guiaID"]) });
        }

    }
}
